Paquetage Debian

Introduit le système de paquetage en général et le système de paquetage de Debian en particulier. Les paquets Debian .deb sont décrits et détaillés.

Introduction

Les systèmes Linux basés sur Debian utilisent des packages pour gérer l'installation de logiciels sur le système (j'utiliserais indiférament "package", "paquet" ou encore "paquetage" pour désigner un paquet). Un package est un ensemble de fichiers et scripts permettant d'installer un logiciel sur le système.

Le package est ainsi généralement composé de fichiers exécutables, de bibliothèques associées, de documentations et de fichiers de configuration. Le package peut aussi comprendre des scripts pour l'installation, la configuration, la désinstallation et spécifier des dépendances envers d'autres packages.

Il existe deux types de paquets : les paquets binaires et les paquets sources.
Les paquets binaires contiennent un logiciel installable sur le système mais surtout directement utilisable. Les paquets binaires ont un nom finissant par .deb.
Les paquets sources contiennent le code source d'un programme et les fichiers nécessaires à sa compilation. Ce type de paquets utilise un nom avec l'extension .dsc.

Le modèle de package

Un package est un ensemble de logiciels directement utilisables sur le système, de cette façon la plupart des packages peuvent être installés sans intervention de l'utlisateur. Dans certaines situations, un package peut nécessiter des étapes suplémentaires que la simple décompression de ses données (par exemple la configuration de la langue). Dans ce cas, les scripts d'installation obtiendrons les données manquantes par une courte interaction avec l'utilisateur.

Un ensemble logiciel tel qu'un package peut nécessiter d'autres ensembles logiciels pour fonctionner, dans ce cas on parle de dépendance. Le système de package Debian prend en charge les dépendances et chaque paquet contient les informations concernant celles-ci. L'installation ou la désinstallation d'un paquet va ainsi vérifier si les dépendances sont satisfaites et va agir en conséquence.

Il existe aussi des paquets virtuels permettant de proposer plusieurs logiciels différents pour satisfaire une dépendance ou de gérer des dépendances vers un service particulier sans référencer un logiciel particulier.
Par exemple les paquets postfix et sendmail (deux serveurs mail) fournissent le paquet virtuel mail-transport-agent, l'installation d'un autre paquet peut nécessiter d'avoir un mail-transport-agent installé, dépendance qui sera remplie indiférement par postfix ou sendmail.

Convention de nommage

Debian utilise une convention de nommage pour les fichiers de paquet :

  nompaquet_version-révisionDebian_plateforme.deb
  • nompaquet : nom du paquet.
  • version : version originale du logiciel du paquet.
  • révisionDebian : numéro de révision du paquet. Ce numéro est donné par le mainteneur du paquet.
  • plateforme : la plateforme cible du paquet (i386, amd64, alpha, etc). Si le paquet n'est pas dépendant d'une plateforme, il est noté all.

Quelques exemples :

  gnash_0.7.1-1_amd64.deb
mozilla-firefox_1.0.4-2sarge7_i386.deb
bind-doc_8.4.6-1_all.deb
iptables_1.3.3-2ubuntu4_powerpc.deb

Comme vous pouvez le voir dans le dernier exemple, Ubuntu suit la même convention de nommage. Toutefois dans Ubuntu, le paquet contient la mention ubuntu dans le numéro de révision si celui-ci vient du dépot "main".

Physionomie d'un package .deb

Les fichiers de paquet Debian sont des archives compressé à l'aide de ar, vous pouvez décompresser l'archive à l'aide de la commande "ar x fichier-package" où fichier-package représente bien évidement le fichier .deb à décompresser. Les fichiers contenus dans l'archive dépendent de la version du format (voir man deb pour la description de votre format actuel), je décrirais par la suite la version 2.0 du format de package Debian.

L'archive comporte 3 fichiers :

  • debian-binary
  • control.tar.gz
  • data.tar.gz
  $ar x eclipse_3.1.2-2_i386.deb
$ls
control.tar.gz data.tar.gz debian-binary eclipse_3.1.2-2_i386.deb
  • Le fichier debian-binary contient une ligne décrivant le numéro de version (2.0), ce fichier sera peut être étendu par la suite pour contenir plus d'information sur le format.
  • Le fichier control.tar.gz est une archive compacté par tar et compressée par gunzip. L'archive contient une série de fichiers décrivant les informations de contrôle du package. L'archive contient au minimum le fichier control qui contient les informations sur le package (description, dépendances, version, conflits,etc).
  • Le fichier data.tar.gz contient les fichiers du package compressé avec gunzip dans une archive tar. La structure du fichier tar reprend la structure du système où le package sera installé de sorte qu'il peut être décompressé tel quel à la racine du système pour l'installation (néanmoins une décompression manuelle de la sorte vous dispense d'exécuter les scripts d'installation ce qui produira probablement une installation inutilisable).

Outils

Les paquets .deb ne sont jamais manipulés directement avec ar mais sont utilisés par d'autres logiciels pour réaliser les installations.

Le principal outil de gestion de paquet est dpkg, il s'agit d'un logiciel dédié à l'installation et à la gestion de paquets. C'est le couteau suisse de la manipulation de paquet Debian mais c'est l'outil le moins utilisé en pratique pour l'adminstration.

Les systèmes basé sur Debian fournissent un autre outil ou plutôt une suite d'outils pour la gestion avancé des paquets : APT (Advanced Packaging Tool). Les outils APT dont le principal est apt-get permettent la gestion de paquet mais prennent aussi en compte les sources de paquet, si bien que l'outil cherchera lui même à répondre aux dépendances et permet de faire des mises à jour du système.

Il existe ensuite de nombreux outils basé sur les deux précédent ou sur leur bibliothèques pour fournir une interface plus simple d'utilisation que des lignes de commande. Citons notament dselect pour la gestion en console et synaptic pour pour la gestion en interface graphique.

Références

Objectifs liés